/**
* Copyright (C) 2013-2024 Nanjing Pengyun Network Technology Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/ 

package py.infocenter.worker;

import java.util.Map;
import py.app.context.AppContext;
import py.icshare.InstanceMaintenanceDbStore;
import py.infocenter.store.ServerNodeStore;
import py.instance.InstanceStore;
import py.periodic.Worker;
import py.periodic.WorkerFactory;


public class ServerNodeAlertCheckerFactory implements WorkerFactory {

  private Map<String, Long> serverNodeReportTimeMap;
  private int serverNodeReportOverTimeSecond;
  private InstanceStore instanceStore;
  private ServerNodeStore serverNodeStore;
  private InstanceMaintenanceDbStore instanceMaintenanceDbStore;
  private AppContext appContext;
  private ServerNodeAlertChecker serverNodeAlertChecker;

  @Override
  public Worker createWorker() {

    if (serverNodeAlertChecker == null) {
      serverNodeAlertChecker = new ServerNodeAlertChecker(serverNodeReportTimeMap,
          serverNodeReportOverTimeSecond, instanceStore, serverNodeStore,
          instanceMaintenanceDbStore, appContext);
    }
    return serverNodeAlertChecker;
  }

  public void setServerNodeReportTimeMap(Map<String, Long> serverNodeReportTimeMap) {
    this.serverNodeReportTimeMap = serverNodeReportTimeMap;
  }

  public void setServerNodeReportOverTimeSecond(int serverNodeReportOverTimeSecond) {
    this.serverNodeReportOverTimeSecond = serverNodeReportOverTimeSecond;
  }

  public void setInstanceStore(InstanceStore instanceStore) {
    this.instanceStore = instanceStore;
  }

  public void setServerNodeStore(ServerNodeStore serverNodeStore) {
    this.serverNodeStore = serverNodeStore;
  }

  public void setInstanceMaintenanceDbStore(InstanceMaintenanceDbStore instanceMaintenanceDbStore) {
    this.instanceMaintenanceDbStore = instanceMaintenanceDbStore;
  }

  public void setAppContext(AppContext appContext) {
    this.appContext = appContext;
  }
}
